Buffer discovery in a parrallel multi-tasking multi-processor environment

ABSTRACT

A computer program product, apparatus and method for buffer discovery in a multi-tasking multi-processor environment. An exemplary embodiment includes establishing a management connection, confirming that end points of the management connection are connected to respective targets, sending a negotiate counts message, including a number and size of buffers associated with parameters of the management connection and receiving a response to the negotiate counts message, the response including at least one of rejection of the management connection and an acceptance of the management connection, including an agreed number and size of the buffers.

Priority based on U.S. Provisional Patent Application, Ser. No. 61/031,315, filed Feb. 25, 2008, and entitled “MULTI-TASKING MULTI-PROCESSOR ENVIRONMENTS OVER INFINIBAND” is claimed, the entire contents of which is incorporated by reference in its entirety.

BACKGROUND OF THE INVENTION

1. Field of Invention

The present disclosure relates generally to multi-tasking multi-processor environments, and in particular, to buffer discovery in a multi-tasking multi-processor environment.

2. Description of Background

In a multi-tasking multi-processor environment there is a need to confirm that the configuration of the connections on the two ends of the link is in agreement before the links come up. In current multi-tasking multi-processor coupling, technology this is handled by the Set Buffer Sizes command and a single channel associated with each hardware link.

Furthermore, the ever increasing speed of links, together with the greater distances raises the desire to keep the communications channel as busy as possible at all times. The buffer interface of a multi-tasking multi-processor environment is an exchange interface, which means that a single buffer must wait for round trip transport as well as processing time before the buffer may be used again. For this reason, there is a desire to add more buffers to each channel in order to keep the channel as busy as possible. Currently, there is no way to adjust the number of buffers assigned to a channel based upon the characteristics of the link.

BRIEF SUMMARY OF THE INVENTION

An exemplary embodiment includes a computer program product for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment, the computer program product including a tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method including establishing a management connection, confirming that end points of the management connection are connected to respective targets, sending a negotiate counts message, including a number and size of buffers associated with parameters of the management connection and receiving a response to the negotiate counts message, the response including at least one of rejection of the management connection and an acceptance of the management connection, including an agreed number and size of the buffers.

Another exemplary embodiment includes an apparatus for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment, the apparatus including a connection manager performing a method including establishing a management connection, confirming that end points of the management connection are connected to respective targets, sending a negotiate counts message, including a number and size of buffers associated with parameters of the management connection and receiving a response to the negotiate counts message, the response including at least one of rejection of the management connection and an acceptance of the management connection, including an agreed number and size of the buffers.

A further exemplary embodiment includes a method for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment, the method including establishing a management connection, confirming that end points of the management connection are connected to respective targets, sending a negotiate counts message, including a number and size of buffers associated with parameters of the management connection and receiving a response to the negotiate counts message, the response including at least one of rejection of the management connection and an acceptance of the management connection, including an agreed number and size of the buffers.

Other articles of manufacture, apparatuses, and/or methods according to embodiments will be or become apparent to one with skill in the art upon review of the following drawings and detailed description. It is intended that all such additional articles of manufacture, apparatuses, and/or methods be included within this description, be within the scope of the present invention, and be protected by the accompanying claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:

FIG. 1A illustrates an exemplary embodiment of a multi-tasking multi-processor Infiniband system;

FIG. 1B illustrates an example of a multi-tasking multi-processor environment;

FIG. 1C illustrates an example of a multi-tasking multi-processor environment in accordance with an exemplary embodiment;

FIG. 1D illustrates an example of a multi-tasking multi-processor environment in accordance with an exemplary embodiment;

FIG. 2 illustrates a flow chart of a method for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment in accordance with exemplary embodiments;

FIG. 3 illustrates an example of a message exchange in accordance with exemplary embodiments; and

FIG. 4 depicts one embodiment of an article of manufacture incorporating one or more aspects of the present invention.

The detailed description explains the preferred embodiments of the invention, together with advantages and features, by way of example with reference to the drawings.

DETAILED DESCRIPTION OF THE INVENTION

In accordance with an aspect of the present invention, the systems and methods described herein provide auto-discovery of the sizes and number of buffers that may be shared across a single communications channel. This exchange takes place across a management connection associated with the channel. In exemplary embodiments, the management connection is the first connection made across the channel. This connection confirms that the end points are properly connected to their intended targets. Once this confirmation is made, the ends negotiate the number of, and the size of the buffers that are to be connected for this channel. If there is a mismatch in the number of buffers, then the lesser number is used. If the buffer sizes do not match, then the smaller size is selected.

FIG. 1A illustrates an exemplary embodiment of a multi-tasking multi-processor Infiniband system 100. The system 100 can include an operating system 105 (e.g., IBM zOS) having a top layer including a relational database 101 a logging facility 102, a locking facility 103 and a cross system coupling facility (XCF). The operating system 105 can further include a multiple virtual storage (MVS) services layer 107 and a message facility layer 108. The system 100 can further include a coupling facility (CF) 110 having a CF structures layer 111, a link subsystem 112 and a message architecture extensions layer 113. In an exemplary embodiment, a transport layer 115 is disposed between and couples the operating system 105 and the CF 110. In an exemplary implementation, the transport layer 115 is supported by Infiniband. FIG. 1B illustrates an example of a multi-tasking multi-processor environment. The example shows three mainframes A, B, C connected into a two different Parallel Sysplex environments using the previous generation of coupling transports. zOS A, zOS B and zOS F are all tied together through a Coupling Facility (CF1). zOS C and zOS D are tied together through CF2. Meanwhile zOS E is a stand alone operating system. In this configuration separate channels are connected through separate adapters in the separate frames. It is appreciated that multiple internal channels 116, 117, 118 include separate external connections 120. FIG. 1C illustrates an example of a multi-tasking multi-processor environment in accordance with an exemplary embodiment. In this example, multiple internal channels 121, 122, 123 share the same physical connection. 125. FIG. 1D illustrates an example of a multi-tasking multi-processor environment 150 in accordance with an exemplary embodiment. The environment 150 can include one or more channels 155, each channel including command/response areas 156, data buffers 157, receive/send queues 158 and adapters 160 for mapping the channels 155 to ports 161 and ultimately communication links 162, as discussed further herein. The channels 155 can further include queue pairs 159 as discussed further herein. The system 150 can further include control code 165 having functions including but not limited to: rendezvous 166, auxiliary queue 167, channel 168, discovery 169 and subnet administrator 170.

FIG. 2 illustrates a flow chart of a method 200 for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment in accordance with exemplary embodiments. At block 210, the system 200 establishes a management connection between an active end and a passive end. At block 220, the system 200 confirms that end points of the management connection are connected to respective targets. At block 230, the active end sends a negotiate counts message, including a number and size of buffers associated with parameters of the management connection. At block 240, the active end receives a response to the negotiate counts message, the response including a rejection of the management connection or an acceptance of the management connection, including an agreed number and size of the buffers.

In an exemplary embodiment, upon establishing the management connection using the management queue pair denoted in FIG. 3 as Aux QP (or Auxiliary Queue Pair), the management connection completes initialization of its management control block (Auxiliary Queue Control Block or AQCB) and posts Work Queue Elements (WQEs) which will be available to receive packets from its partner. Once this is complete, the end point designated by the Infiniband connection manager as the active end sends a Negotiate Counts message, with the number and size of buffers that were specified in its configuration, to its partner. Upon receipt of the Negotiate Counts message, the passive end compares the information in the packet with those from its own configuration. FIG. 3 illustrates an example of a message exchange in accordance with exemplary embodiments. In an exemplary embodiment, upon receipt of the Negotiate Request packet, the passive end can choose to either accept or reject the connection. If it chooses to accept the connection, then it selects the smaller of the number of buffers and the size of buffers, sets up those parameters in its own structures, and respond to the active side with the agreed upon number and size of the buffers and prepares to start connecting the queue pairs associated with the buffers. If it decides not to accept the connection, then it requests the connection manager to drop the connection. When the active side receives the response message, it too can either accept or reject the parameters. If it rejects the connection, then the link is dropped. If it accepts the agreement, then it will ensure that the agreed upon parameters are stored. Assuming that all goes well through the negotiation, the active end will start creating and connecting the queue pairs associated with each of the buffers.

When the last of the buffer queue pairs has been connected, the active end will generate a Node Descriptor (ND) message containing data pertinent to the software layers that will be using the channel, and sends that message to the passive partner. Upon receipt of the Node Descriptor message, the passive end will save that data, notify the higher layer software (in this case the I/O Processor or IOP) of its arrival, and then generate its own Node Descriptor message and send it to the active end. Upon receiving the Node Descriptor, the active end will save the data and notify the higher layer software of its arrival. At this point the buffers of the channel are available for sending and receiving application data.

This same methodology could be used in a number of other communications environments where communications pathways are bundled, and there is an ability to use an out of band connection to set up and manage the communications channel.

Technical effects of exemplary embodiments include the ability to add more buffers to each channel in order to keep the channel as busy as possible. In addition the exemplary embodiments include the ability to adjust the number of buffers assigned to a channel based upon the characteristics of the link.

This approach significantly improves upon the limited capability contained in the support for the previous coupling technologies.

As described above, embodiments can be embodied in the form of computer-implemented processes and apparatuses for practicing those processes. In exemplary embodiments, the invention is embodied in computer program code executed by one or more network elements. Embodiments include a computer program product 400 as depicted in FIG. 4 on a computer usable medium 402 with computer program code logic 404 containing instructions embodied in tangible media as an article of manufacture. Exemplary articles of manufacture for computer usable medium 402 may include floppy diskettes, CD-ROMs, hard drives, universal serial bus (USB) flash drives, or any other computer-readable storage medium, wherein, when the computer program code logic 404 is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. Embodiments include computer program code logic 404, for example, whether stored in a storage medium, loaded into and/or executed by a computer, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code logic 404 is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. When implemented on a general-purpose microprocessor, the computer program code logic 404 segments configure the microprocessor to create specific logic circuits.

While the invention has been described with reference to exemplary embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed as the best mode contemplated for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims. Moreover, the use of the terms first, second, etc. do not denote any order or importance, but rather the terms first, second, etc. are used to distinguish one element from another. Furthermore, the use of the terms a, an, etc. do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced item. 

1. A computer program product for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment, the computer program product comprising: a tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising: establishing a management connection; confirming that end points of the management connection are connected to respective targets; sending a negotiate counts message, including a number and size of buffers associated with parameters of the management connection; and receiving a response to the negotiate counts message, the response including at least one of rejection of the management connection and an acceptance of the management connection, including an agreed number and size of the buffers.
 2. The computer program product as claimed in claim 1, wherein the method further comprises in response to a mismatch in the number of buffers, setting a lesser number of buffers in the management connection.
 3. The computer program product as claimed in claim 1, wherein the method further comprises in response to a buffer size mismatch, selecting a smaller buffer size as the buffer size.
 4. The computer program product as claimed in claim 1, wherein the acceptance of the connection includes a smaller number of selected buffers and a smaller size of the selected buffers.
 5. The computer program product as claimed in claim 4, wherein the method further comprises: accepting the connection; and storing the agreed number and size of the buffers.
 6. The computer program product as claimed in claim 4, wherein the method further comprises creating and connecting queue pairs associated with each of the buffers.
 7. The computer program product as claimed in claim 4, wherein the method further comprises sending a node descriptor.
 8. The computer program product as claimed in claim 1, wherein the rejection of the connection includes a request to drop the connection.
 9. The computer program product as claimed in claim 8, wherein the method further comprises dropping the connection.
 10. An apparatus for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment, the apparatus comprising: a connection manager performing a method comprising: establishing a management connection; confirming that end points of the management connection are connected to respective targets; sending a negotiate counts message, including a number and size of buffers associated with parameters of the management connection; and receiving a response to the negotiate counts message, the response including at least one of rejection of the management connection and an acceptance of the management connection, including an agreed number and size of the buffers.
 11. The apparatus as claimed in claim 10 wherein the method further comprises: accepting the connection, wherein the acceptance of the connection includes a smaller number of selected buffers and a smaller size of the selected buffers. storing an agreed number and size of the buffers; and creating and connecting queue pairs associated with each of the buffers.
 12. The apparatus as claimed in claim 10, wherein the method further comprises: rejecting the connection; and dropping the connection.
 13. A method for identifying sizes and number of buffers across a communication link in a multi-tasking multi-processor environment, the method comprising: establishing a management connection; confirming that end points of the management connection are connected to respective targets; sending a negotiate counts message, including a number and size of buffers associated with parameters of the management connection; and receiving a response to the negotiate counts message, the response including at least one of rejection of the management connection and an acceptance of the management connection, including an agreed number and size of the buffers.
 14. The method as claimed in claim 13, further comprising in response to a mismatch in the number of buffers, setting a lesser number of buffers in the management connection.
 15. The method as claimed in claim 13, further comprising in response to a buffer size mismatch, selecting a smaller buffer size as the buffer size.
 16. The method as claimed in claim 13, wherein the acceptance of the connection includes a smaller number of selected buffers and a smaller size of the selected buffers.
 17. The method as claimed in claim 16, further comprising: accepting the connection; and storing the agreed number and size of the buffers.
 18. The method as claimed in claim 16, further comprising creating and connecting queue pairs associated with each of the buffers.
 19. The method as claimed in claim 13, wherein the rejection of the connection includes a request to drop the connection.
 20. The method as claimed in claim 19, further comprising dropping the connection 